<?php 
class Chinabank{
	//****************************************
	private  $v_mid = '';								    // 商户号，这里为测试商户号1001，替换为自己的商户号(老版商户号为4位或5位,新版为8位)即可
	private  $v_url = '';	// 请填写返回url,地址应为绝对路径,带有http协议
	private  $key   = '';								    // 如果您还没有设置MD5密钥请登陆我们为您提供商户后台，地址：https://merchant3.chinabank.com.cn/
														// 登陆后在上面的导航栏里可能找到“B2C”，在二级导航栏里有“MD5密钥设置” 
														// 建议您设置一个16位以上的密钥或更高，密钥最多64位，但设置16位已经足够了
	private  $url = 'https://Pay3.chinabank.com.cn/PayGate';
	//****************************************
	
	public function __construct(){
		$payment = M('Payment');
		$data = $payment->find(3);
		$config = C('SYSCONFIG');
		$this->v_mid = $data['business'];
		$this->key = $data['key'];
		$this->v_url = HOST.__APP__.'/Payment/chinabank_return_url';
	}
	
	
	public function _return_url(){			
		$v_oid     =trim($_POST['v_oid']);       // 商户发送的v_oid定单编号   
		$v_pmode   =trim($_POST['v_pmode']);    // 支付方式（字符串）   
		$v_pstatus =trim($_POST['v_pstatus']);   //  支付状态 ：20（支付成功）；30（支付失败）
		$v_pstring =trim($_POST['v_pstring']);   // 支付结果信息 ： 支付完成（当v_pstatus=20时）；失败原因（当v_pstatus=30时,字符串）； 
		$v_amount  =trim($_POST['v_amount']);     // 订单实际支付金额
		$v_moneytype  =trim($_POST['v_moneytype']); //订单实际支付币种    
		$remark1   =trim($_POST['remark1']);      //备注字段1
		$remark2   =trim($_POST['remark2']);     //备注字段2
		$v_md5str  =trim($_POST['v_md5str' ]);   //拼凑后的MD5校验值 
		
		$md5string=strtoupper(md5($v_oid.$v_pstatus.$v_amount.$v_moneytype.$this->key));
		if ($v_md5str==$md5string){
			if($v_pstatus=="20")
			{
				//支付成功，可进行逻辑处理！
				return true;//商户系统的逻辑处理（例如判断金额，判断支付状态，更新订单状态等等）......
			}else{
				return false;
			}			
		}else{
			return false;
		}
	}
	
	/*$data 为数组
	 * RE
	 * ['sn']定单号
	 * ['amount'] 订单价格
	 * 
	 * PA
	 * ['ordersn']定单号
	 * ['goodsname']商品名称
	 * ['remark']商品描述
	 * ['orderprice'] 订单价格
	 * 
	 * $type 为订单类型 RE充值 PA支付
	 * */
	public function _alipayto($data,$type='RE'){
		require_once("payment/alipay/alipay_service.php");
		/*以下参数是需要通过下单时的订单数据传入进来获得*/
		//必填参数
		if ($type == 'RE'){
			$config = C('SYSCONFIG');
			$beat = $data['amount'] * $config['rmb_beat'];
			
			$v_oid = $data['sn'];		//请与贵网站订单系统中的唯一订单号匹配
			//$remark1      = $config['webname'];	//订单名称，显示在支付宝收银台里的“商品名称”里，显示在支付宝的交易管理的“商品名称”的列表里。
			//$remark2         = $config['webname'].$beat.$config['beat_name'];	//订单描述、订单详细、订单备注，显示在支付宝收银台里的“商品描述”里
			$v_amount    = $data['amount'];	//订单总金额，显示在支付宝收银台里的“应付总额”里
		}elseif ($type == 'PA'){
			$v_oid = $data['ordersn'];		//请与贵网站订单系统中的唯一订单号匹配
			//$remark1      = $data['goodsname'];	//订单名称，显示在支付宝收银台里的“商品名称”里，显示在支付宝的交易管理的“商品名称”的列表里。
			//$remark2         = $data['remark'];	//订单描述、订单详细、订单备注，显示在支付宝收银台里的“商品描述”里
			$v_amount    = $data['orderprice'];	//订单总金额，显示在支付宝收银台里的“应付总额”里
		}
		
		$v_moneytype = "CNY";                                            //币种
		$text = $v_amount.$v_moneytype.$v_oid.$this->v_mid.$this->v_url.$this->key;        //md5加密拼凑串,注意顺序不能变
		$v_md5info = strtoupper(md5($text));                             //md5函数加密并转化成大写字母
		
		$redata = array(
			'v_mid'=>$this->v_mid,
			'v_oid'=>$v_oid,
			'v_amount'=>$v_amount,
			'v_moneytype'=>$v_moneytype,
			'v_url'=>$this->v_url,
			'v_md5info'=>$v_md5info,
		);

		$sHtml = $this->url.'?';

		foreach ($redata as $key=>$val){
			$sHtml.= '&'.$key.'='.$val;
		}
		
		return $sHtml;
		
	}
	
	
	
	
}
?>